package dcedit.cha;

// Import Java SDK Classes
import java.io.Serializable;

// Import Application Classes
import dcedit.util.*;

/**
 * DCCharacter class<br/>
 * This class represents a gaming character that can be used for games programmed into DCEdit
 * @author dca
 */
public class DCCharacter implements Serializable {
   /** Serial Version UID version for serializable classes */
   public static final long serialVersionUID = 1289758387105L;

   /**
    * Constructor.<br/>
    * This constructor calls another constructor with arguments.
    * @see #DCCharacter(OmniImage, String, String, String, String, String, int, int, int, int, int, int, int)
    */
   public DCCharacter() {
      this(null, "neutral", "human", "fighter", "aries", "?", 0, 0, 0, 0, 0, 0, 0);
   } // END constructor

   /**
    * Constructor.<br/>
    * This constructor defines the fields of a DCCharacter.
    * @param avatar The character's portrait image.
    * @param gender Male or female
    * @param race The character's race
    * @param clazz The character's class
    * @param zodiac The character's sign
    * @param name The character's name
    * @param physicalStrength The character's physical strength attribute.
    * @param physicalDefense The character's physical defense attribute.
    * @param magicalStrength The character's magical strength attribute.
    * @param magicalDefense The character's magical defense attribute.
    * @param agility The character's agility attribute.
    * @param constitution The character's constitution attribute.
    * @param charisma The character's charisma attribute.
    */
   public DCCharacter(OmniImage avatar, String gender, String race, String clazz, String zodiac, String name,
                      int physicalStrength, int physicalDefense,
                      int magicalStrength, int magicalDefense,
                      int agility, int constitution, int charisma) {
      setAvatar(avatar);
      setGender(gender);
      setRace(race);
      setClazz(clazz);
      setZodiac(zodiac);
      setName(name);
      setPhysicalStrength(physicalStrength);
      setPhysicalDefense(physicalDefense);
      setMagicalStrength(magicalStrength);
      setMagicalDefense(magicalDefense);
      setAgility(agility);
      setConstitution(constitution);
      setCharisma(charisma);
   } // END constructor

   /** avatar (sprite) path field */
   private OmniImage avatar;

   /** gender field */
   private String gender;

   /** race field */
   private String race;

   /** class field */
   private String clazz;

   /** zodiac field */
   private String zodiac;

   /** name field */
   private String name;

   /** physical strength (character attribute) field */
   private int physicalStrength;

   /** physical defense (character attribute) field */
   private int physicalDefense;

   /** magical strength (character attribute) field */
   private int magicalStrength;

   /** magical defense (character attribute) field */
   private int magicalDefense;

   /** agility (character attribute) field */
   private int agility;

   /** constitution (character attribute) field */
   private int constitution;

   /** charisma (character attribute) field */
   private int charisma;

   /**
    * The getAvatar method.
    * @return OmniImage The character's portrait image.
    */
   public OmniImage getAvatar() {
      return this.avatar;
   } // END getAvatar method

   /**
    * The setAvatar method.
    * @param avatar The character's portrait image.
    */
   public void setAvatar(OmniImage avatar) {
      this.avatar = avatar;
   } // END setAvatar method

   /**
    * The getGender method.
    * @return gender Male or female.
    */
   public String getGender() {
      return this.gender;
   } // END getGender method

   /**
    * The setGender method.
    * @param gender Male or female.
    */
   public void setGender(String gender) {
      this.gender = gender;
   } // END setGender method

   /**
    * The getRace method.
    * @return race The character's race attribute.
    */
   public String getRace() {
      return this.race;
   } // END getRace method

   /**
    * The setRace method.
    * @param race The character's race attribute.
    */
   public void setRace(String race) {
      this.race = race;
   } // END setRace method

   /**
    * The getClazz method.
    * @return clazz The character's class attribute.
    */
   public String getClazz() {
      return this.clazz;
   } // END getClazz method

   /**
    * The setClazz method.
    * @param clazz The character's class attribute.
    */
   public void setClazz(String clazz) {
      this.clazz = clazz;
   } // END setClazz method

   /**
    * The getZodiac method.
    * @return zodiac The character's sign.
    */
   public String getZodiac() {
      return this.zodiac;
   } // END getZodiac method

   /**
    * The setZodiac method.
    * @param zodiac The character's sign.
    */
   public void setZodiac(String zodiac) {
      this.zodiac = zodiac;
   } // END setZodiac method

   /**
    * The getName method.
    * @return name The character's name.
    */
   public String getName() {
      return this.name;
   } // END getName method

   /**
    * The setName method.
    * @param name The character's name.
    */
   public void setName(String name) {
      this.name = name;
   } // END setName method

   /**
    * The getPhysicalStrength method.
    * @return physicalStrength The character's physical strength attribute.
    */
   public int getPhysicalStrength() {
      return this.physicalStrength;
   } // END getPhysicalStrength method

   /**
    * The setPhysicalStrength method.
    * @param physicalStrength The character's physical strength attribute.
    */
   public void setPhysicalStrength(int physicalStrength) {
      this.physicalStrength = physicalStrength;
   } // END setPhysicalStrength method

   /**
    * The getPhysicalDefense method.
    * @return physicalDefense The character's physical defense attribute.
    */
   public int getPhysicalDefense() {
      return this.physicalDefense;
   } // END getPhysicalDefense method

   /**
    * The setPhysicalDefense method.
    * @param physicalDefense The character's physical defense attribute.
    */
   public void setPhysicalDefense(int physicalDefense) {
      this.physicalDefense = physicalDefense;
   } // END setPhysicalDefense method

   /**
    * The getMagicalStrength method.
    * @return magicalStrength The character's magical strength attribute.
    */
   public int getMagicalStrength() {
      return this.magicalStrength;
   } // END getMagicalStrength method

   /**
    * The setMagicalStrength method.
    * @param magicalStrength The character's magical strength attribute.
    */
   public void setMagicalStrength(int magicalStrength) {
      this.magicalStrength = magicalStrength;
   } // END setMagicalStrength method

   /**
    * The getMagicalDefense method.
    * @return magicalDefense The character's magical defense attribute.
    */
   public int getMagicalDefense() {
      return this.magicalDefense;
   } // END getMagicalDefense method

   /**
    * The setMagicalDefense method.
    * @param magicalDefense The character's magical defense attribute.
    */
   public void setMagicalDefense(int magicalDefense) {
      this.magicalDefense = magicalDefense;
   } // END setMagicalDefense method

   /**
    * The getAgility method.
    * @return agility The character's agility attribute.
    */
   public int getAgility() {
      return this.agility;
   } // END getAgility method

   /**
    * The setAgility method.
    * @param agility The character's agility attribute.
    */
   public void setAgility(int agility) {
      this.agility = agility;
   } // END setAgility method

   /**
    * The getConstitution method.
    * @return constitution The character's constitution attribute.
    */
   public int getConstitution() {
      return this.constitution;
   } // END getConstitution method

   /**
    * The setConstitution method.
    * @param constitution The character's constitution attribute.
    */
   public void setConstitution(int constitution) {
      this.constitution = constitution;
   } // END setConstitution method

   /**
    * The getCharisma method.
    * @return charisma The character's charisma attribute.
    */
   public int getCharisma() {
      return this.charisma;
   } // END getCharisma method

   /**
    * The setCharisma method.
    * @param charisma The character's charisma attribute.
    */
   public void setCharisma(int charisma) {
      this.charisma = charisma;
   } // END setCharisma method
} // END class DCCharacter